package com.zhj.agent.support;

import net.bytebuddy.dynamic.DynamicType;

/**
 * class类增强的插件定义
 */
public interface ClassEnhancePluginDefine {

    /**
     * 需要增强的类的名称
     *
     * @return the string
     * @since 1.0.0
     */
    String enhanceClass();

    /**
     * 对类型进行增强后返回新的定义
     *
     * @return the dynamic type . 动态类型的构建器
     * @since 1.0.0
     */
    DynamicType.Builder<?> define(DynamicType.Builder<?> newBuilder,
                                  ClassLoader classLoader);

    /**
     * 获取到需要增强的具体方法
     *
     * @return the list
     * @since 1.0.0
     */
    InstanceMethodsInterceptPoint[] enhanceInstance();

}
